home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / Xm / XmCascadeButton.z / XmCascadeButton
Encoding:
Text File  |  2002-10-03  |  36.3 KB  |  595 lines

  1.  
  2.  
  3.  
  4.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.           XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn - The CascadeButton widget class
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.           #include <Xm/CascadeB.h>
  13.  
  14.      VVVVEEEERRRRSSSSIIIIOOOONNNN
  15.           This page documents Motif 2.1.
  16.  
  17.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  18.           CascadeButton links two menu panes or a MenuBar to a menu
  19.           pane.
  20.  
  21.           It is used in menu systems and must have a RowColumn parent
  22.           with its XXXXmmmmNNNNrrrroooowwwwCCCCoooolllluuuummmmnnnnTTTTyyyyppppeeee resource set to XXXXmmmmMMMMEEEENNNNUUUU____BBBBAAAARRRR,
  23.           XXXXmmmmMMMMEEEENNNNUUUU____PPPPOOOOPPPPUUUUPPPP or XXXXmmmmMMMMEEEENNNNUUUU____PPPPUUUULLLLLLLLDDDDOOOOWWWWNNNN.
  24.  
  25.           It is the only widget that can have a Pulldown menu pane
  26.           attached to it as a submenu. The submenu is displayed when
  27.           this widget is activated within a MenuBar, a PopupMenu, or a
  28.           PulldownMenu. Its visuals can include a label or pixmap and
  29.           a cascading indicator when it is in a Popup or Pulldown menu
  30.           pane; or it can include only a label or a pixmap when it is
  31.           in a MenuBar.  The positioning of the PulldownMenu with
  32.           respect to the CascadeButton depends on the
  33.           XXXXmmmmNNNNllllaaaayyyyoooouuuuttttDDDDiiiirrrreeeeccccttttiiiioooonnnn resource of the MenuShell.
  34.  
  35.           The default behavior associated with a CascadeButton depends
  36.           on the type of menu system in which it resides.  By default,
  37.           BBBBSSSSeeeelllleeeecccctttt controls the behavior of the CascadeButton.  In
  38.           addition, BBBBMMMMeeeennnnuuuu controls the behavior of the CascadeButton
  39.           if it resides in a PopupMenu system.  The actual mouse
  40.           button used is determined by its RowColumn parent.  BBBBMMMMeeeennnnuuuu
  41.           also performs the BBBBSSSSeeeelllleeeecccctttt actions in all types of menu
  42.           systems.
  43.  
  44.           A CascadeButton's visuals differ from most other button
  45.           gadgets. When the button becomes armed, its visuals change
  46.           from a 2-D to a 3-D look, and it displays the submenu that
  47.           has been attached to it. If no submenu is attached, it
  48.           simply changes its visuals.
  49.  
  50.           When a CascadeButton within a Pulldown or Popup menu pane is
  51.           armed as the result of the user moving the mouse pointer
  52.           into the widget, it does not immediately display its
  53.           submenu. Instead, it waits a short amount of time to see if
  54.           the arming was temporary (that is, the user was simply
  55.           passing through the widget), or whether the user really
  56.           wanted the submenu posted. This time delay is configurable
  57.           using XXXXmmmmNNNNmmmmaaaappppppppiiiinnnnggggDDDDeeeellllaaaayyyy.
  58.  
  59.           CascadeButton provides a single mechanism for activating the
  60.  
  61.  
  62.  
  63.      Page 1                                          (printed 10/3/02)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  71.  
  72.  
  73.  
  74.           widget from the keyboard. This mechanism is referred to as a
  75.           keyboard mnemonic.  If a mnemonic has been specified for the
  76.           widget, the user may activate the CascadeButton by simply
  77.           typing the mnemonic while the CascadeButton is visible.  If
  78.           the CascadeButton is in a MenuBar and the MenuBar does not
  79.           have the focus, the MMMMAAAAlllltttt modifier must be pressed with the
  80.           mnemonic.  Mnemonics are typically used to interact with a
  81.           menu using the keyboard interface.
  82.  
  83.           If the Cascadebutton is in a Pulldown or Popup menu pane and
  84.           there is a submenu attached, the XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnBBBBoooottttttttoooommmm,
  85.           XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnLLLLeeeefffftttt, XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnRRRRiiiigggghhhhtttt, and XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnTTTToooopppp resources
  86.           may enlarge to accommodate XXXXmmmmNNNNccccaaaassssccccaaaaddddeeeePPPPiiiixxxxmmmmaaaapppp.  XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnWWWWiiiiddddtttthhhh
  87.           defaults to 6 if this resource is in a MenuBar; otherwise,
  88.           it takes Label's default, which is 2.
  89.  
  90.           CascadeButton uses the _X_m_Q_T_m_e_n_u_S_y_s_t_e_m and
  91.           _X_m_Q_T_s_p_e_c_i_f_y_R_e_n_d_e_r_T_a_b_l_e traits.
  92.  
  93.         CCCCllllaaaasssssssseeeessss
  94.           CascadeButton inherits behavior, resources, and traits from
  95.           CCCCoooorrrreeee, XXXXmmmmPPPPrrrriiiimmmmiiiittttiiiivvvveeee, and XXXXmmmmLLLLaaaabbbbeeeellll classes.
  96.  
  97.           The class pointer is _x_m_C_a_s_c_a_d_e_B_u_t_t_o_n_W_i_d_g_e_t_C_l_a_s_s.
  98.  
  99.           The class name is XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn.
  100.  
  101.         NNNNeeeewwww RRRReeeessssoooouuuurrrrcccceeeessss
  102.           The following table defines a set of widget resources used
  103.           by the programmer to specify data. The programmer can also
  104.           set the resource values for the inherited classes to set
  105.           attributes for this widget. To reference a resource by name
  106.           or by class in a ....XXXXddddeeeeffffaaaauuuullllttttssss file, remove the XXXXmmmmNNNN or XXXXmmmmCCCC
  107.           prefix and use the remaining letters. To specify one of the
  108.           defined values for a resource in a ....XXXXddddeeeeffffaaaauuuullllttttssss file, remove
  109.           the XXXXmmmm prefix and use the remaining letters (in either
  110.           lowercase or uppercase, but include any underscores between
  111.           words).  The codes in the access column indicate if the
  112.           given resource can be set at creation time (C), set by using
  113.           XXXXttttSSSSeeeettttVVVVaaaalllluuuueeeessss (S), retrieved by using XXXXttttGGGGeeeettttVVVVaaaalllluuuueeeessss (G), or is
  114.           not applicable (N/A).
  115.  
  116.                                  XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn RRRReeeessssoooouuuurrrrcccceeee SSSSeeeetttt
  117.           NNNNaaaammmmeeee                   CCCCllllaaaassssssss             TTTTyyyyppppeeee             DDDDeeeeffffaaaauuuulllltttt   AAAAcccccccceeeessssssss
  118.           XmNactivateCallback    XmCCallback       XtCallbackList   NULL      C
  119.           XmNcascadePixmap       XmCPixmap         Pixmap           dynamic   CSG
  120.           XmNcascadingCallback   XmCCallback       XtCallbackList   NULL      C
  121.           XmNmappingDelay        XmCMappingDelay   int              180 ms    CSG
  122.           XmNsubMenuId           XmCMenuWidget     Widget           NULL      CSG
  123.  
  124.           XXXXmmmmNNNNaaaaccccttttiiiivvvvaaaatttteeeeCCCCaaaallllllllbbbbaaaacccckkkk
  125.                     Specifies the list of callbacks that is called
  126.  
  127.  
  128.  
  129.      Page 2                                          (printed 10/3/02)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  137.  
  138.  
  139.  
  140.                     when the user activates the CascadeButton widget
  141.                     and there is no submenu attached to pop up. The
  142.                     activation occurs when a mouse button is released
  143.                     or when the mnemonic associated with the widget is
  144.                     typed. The specific mouse button depends on
  145.                     information in the RowColumn parent. The reason
  146.                     sent by the callback is XXXXmmmmCCCCRRRR____AAAACCCCTTTTIIIIVVVVAAAATTTTEEEE.
  147.  
  148.           XXXXmmmmNNNNccccaaaassssccccaaaaddddeeeePPPPiiiixxxxmmmmaaaapppp
  149.                     Specifies the cascade pixmap displayed on one end
  150.                     of the widget when a CascadeButton is used within
  151.                     a Popup or Pulldown menu pane and a submenu is
  152.                     attached.  The Label class resources
  153.                     XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnBBBBoooottttttttoooommmm, XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnLLLLeeeefffftttt, XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnRRRRiiiigggghhhhtttt,
  154.                     and XXXXmmmmNNNNmmmmaaaarrrrggggiiiinnnnTTTToooopppp may be modified to ensure that
  155.                     room is left for the cascade pixmap.  The default
  156.                     cascade pixmap is an arrow pointing to the side of
  157.                     the menu where the submenu will appear.  The
  158.                     positioning of the cascade pixmap to either the
  159.                     left of right of the widget, and the direction of
  160.                     the arrow, depend on the XXXXmmmmNNNNllllaaaayyyyoooouuuuttttDDDDiiiirrrreeeeccccttttiiiioooonnnn
  161.                     resource of the MenuShell.
  162.  
  163.           XXXXmmmmNNNNccccaaaassssccccaaaaddddiiiinnnnggggCCCCaaaallllllllbbbbaaaacccckkkk
  164.                     Specifies the list of callbacks that is called
  165.                     just prior to the mapping of the submenu
  166.                     associated with CascadeButton. The reason sent by
  167.                     the callback is XXXXmmmmCCCCRRRR____CCCCAAAASSSSCCCCAAAADDDDIIIINNNNGGGG.
  168.  
  169.           XXXXmmmmNNNNmmmmaaaappppppppiiiinnnnggggDDDDeeeellllaaaayyyy
  170.                     Specifies the amount of time, in milliseconds,
  171.                     between when a CascadeButton becomes armed and
  172.                     when it maps its submenu. This delay is used only
  173.                     when the widget is within a Popup or Pulldown menu
  174.                     pane.  The value must not be negative.
  175.  
  176.           XXXXmmmmNNNNssssuuuubbbbMMMMeeeennnnuuuuIIIIdddd
  177.                     Specifies the widget ID for the Pulldown menu pane
  178.                     to be associated with this CascadeButton. The
  179.                     specified menu pane is displayed when the
  180.                     CascadeButton becomes armed. The menu pane must
  181.                     have been created with the appropriate parentage
  182.                     depending on the type of menu used. See
  183.                     XXXXmmmmCCCCrrrreeeeaaaatttteeeeMMMMeeeennnnuuuuBBBBaaaarrrr(3), XXXXmmmmCCCCrrrreeeeaaaatttteeeePPPPuuuullllllllddddoooowwwwnnnnMMMMeeeennnnuuuu(3), and
  184.                     XXXXmmmmCCCCrrrreeeeaaaatttteeeePPPPooooppppuuuuppppMMMMeeeennnnuuuu(3) for more information on the
  185.                     menu systems.
  186.  
  187.         IIIInnnnhhhheeeerrrriiiitttteeeedddd RRRReeeessssoooouuuurrrrcccceeeessss
  188.           CascadeButton inherits behavior and resources from the
  189.           superclasses described in the following tables.  For a
  190.           complete description of each resource, refer to the
  191.           reference page for that superclass.
  192.  
  193.  
  194.  
  195.      Page 3                                          (printed 10/3/02)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  203.  
  204.  
  205.  
  206.                                                      XXXXmmmmLLLLaaaabbbbeeeellll RRRReeeessssoooouuuurrrrcccceeee SSSSeeeetttt
  207.           NNNNaaaammmmeeee                        CCCCllllaaaassssssss                       TTTTyyyyppppeeee                DDDDeeeeffffaaaauuuulllltttt                  AAAAcccccccceeeessssssss
  208.           XmNaccelerator              XmCAccelerator              String              NULL                     N/A
  209.           XmNacceleratorText          XmCAcceleratorText          XmString            NULL                     N/A
  210.           XmNalignment                XmCAlignment                unsigned char       dynamic                  CSG
  211.           XmNfontList                 XmCFontList                 XmFontList          dynamic                  CSG
  212.           XmNlabelInsensitivePixmap   XmCLabelInsensitivePixmap   Pixmap              XmUNSPECIFIED_PIXMAP     CSG
  213.           XmNlabelPixmap              XmCLabelPixmap              Pixmap              XmUNSPECIFIED_PIXMAP     CSG
  214.           XmNlabelString              XmCXmString                 XmString            dynamic                  CSG
  215.           XmNlabelType                XmCLabelType                unsigned char       XmSTRING                 CSG
  216.           XmNmarginBottom             XmCMarginBottom             Dimension           dynamic                  CSG
  217.           XmNmarginHeight             XmCMarginHeight             Dimension           2                        CSG
  218.           XmNmarginLeft               XmCMarginLeft               Dimension           0                        CSG
  219.           XmNmarginRight              XmCMarginRight              Dimension           dynamic                  CSG
  220.           XmNmarginTop                XmCMarginTop                Dimension           dynamic                  CSG
  221.           XmNmarginWidth              XmCMarginWidth              Dimension           dynamic                  CSG
  222.           XmNmnemonic                 XmCMnemonic                 KeySym              NULL                     CSG
  223.           XmNmnemonicCharSet          XmCMnemonicCharSet          String              XmFONTLIST_DEFAULT_TAG   CSG
  224.           XmNrecomputeSize            XmCRecomputeSize            Boolean             True                     CSG
  225.           XmNrenderTable              XmCRenderTable              XmRenderTable       dynamic                  CSG
  226.           XmNstringDirection          XmCStringDirection          XmStringDirection   dynamic                  CSG
  227.  
  228.                                                XXXXmmmmPPPPrrrriiiimmmmiiiittttiiiivvvveeee RRRReeeessssoooouuuurrrrcccceeee SSSSeeeetttt
  229.           NNNNaaaammmmeeee                      CCCCllllaaaassssssss                   TTTTyyyyppppeeee               DDDDeeeeffffaaaauuuulllltttt                AAAAcccccccceeeessssssss
  230.           XmNbottomShadowColor      XmCBottomShadowColor    Pixel              dynamic                CSG
  231.           XmNbottomShadowPixmap     XmCBottomShadowPixmap   Pixmap             XmUNSPECIFIED_PIXMAP   CSG
  232.           XmNconvertCallback        XmCCallback             XtCallbackList     NULL                   C
  233.           XmNforeground             XmCForeground           Pixel              dynamic                CSG
  234.           XmNhelpCallback           XmCCallback             XtCallbackList     NULL                   C
  235.           XmNhighlightColor         XmCHighlightColor       Pixel              dynamic                CSG
  236.           XmNhighlightOnEnter       XmCHighlightOnEnter     Boolean            False                  CSG
  237.           XmNhighlightPixmap        XmCHighlightPixmap      Pixmap             dynamic                CSG
  238.           XmNhighlightThickness     XmCHighlightThickness   Dimension          0                      CSG
  239.           XmNlayoutDirection        XmCLayoutDirection      XmDirection        dynamic                CG
  240.           XmNnavigationType         XmCNavigationType       XmNavigationType   XmNONE                 CSG
  241.           XmNpopupHandlerCallback   XmCCallback             XtCallbackList     NULL                   C
  242.           XmNshadowThickness        XmCShadowThickness      Dimension          2                      CSG
  243.           XmNtopShadowColor         XmCTopShadowColor       Pixel              dynamic                CSG
  244.           XmNtopShadowPixmap        XmCTopShadowPixmap      Pixmap             dynamic                CSG
  245.           XmNtraversalOn            XmCTraversalOn          Boolean            dynamic                G
  246.           XmNunitType               XmCUnitType             unsigned char      dynamic                CSG
  247.           XmNuserData               XmCUserData             XtPointer          NULL                   CSG
  248.  
  249.                                                         CCCCoooorrrreeee RRRReeeessssoooouuuurrrrcccceeee SSSSeeeetttt
  250.           NNNNaaaammmmeeee                            CCCCllllaaaassssssss                           TTTTyyyyppppeeee             DDDDeeeeffffaaaauuuulllltttt                AAAAcccccccceeeessssssss
  251.           XmNaccelerators                 XmCAccelerators                 XtAccelerators   dynamic                CSG
  252.           XmNancestorSensitive            XmCSensitive                    Boolean          dynamic                G
  253.           XmNbackground                   XmCBackground                   Pixel            dynamic                CSG
  254.           XmNbackgroundPixmap             XmCPixmap                       Pixmap           XmUNSPECIFIED_PIXMAP   CSG
  255.           XmNborderColor                  XmCBorderColor                  Pixel            XtDefaultForeground    CSG
  256.  
  257.  
  258.  
  259.  
  260.  
  261.      Page 4                                          (printed 10/3/02)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  269.  
  270.  
  271.  
  272.           XmNborderPixmap                 XmCPixmap                       Pixmap           XmUNSPECIFIED_PIXMAP   CSG
  273.           XmNborderWidth                  XmCBorderWidth                  Dimension        0                      CSG
  274.           XmNcolormap                     XmCColormap                     Colormap         dynamic                CG
  275.           XmNdepth                        XmCDepth                        int              dynamic                CG
  276.           XmNdestroyCallback              XmCCallback                     XtCallbackList   NULL                   C
  277.           XmNheight                       XmCHeight                       Dimension        dynamic                CSG
  278.           XmNinitialResourcesPersistent   XmCInitialResourcesPersistent   Boolean          True                   C
  279.           XmNmappedWhenManaged            XmCMappedWhenManaged            Boolean          True                   CSG
  280.           XmNscreen                       XmCScreen                       Screen *         dynamic                CG
  281.           XmNsensitive                    XmCSensitive                    Boolean          True                   CSG
  282.           XmNtranslations                 XmCTranslations                 XtTranslations   dynamic                CSG
  283.           XmNwidth                        XmCWidth                        Dimension        dynamic                CSG
  284.           XmNx                            XmCPosition                     Position         0                      CSG
  285.           XmNy                            XmCPosition                     Position         0                      CSG
  286.  
  287.         CCCCaaaallllllllbbbbaaaacccckkkk IIIInnnnffffoooorrrrmmmmaaaattttiiiioooonnnn
  288.           A pointer to the following structure is passed to each
  289.           callback:
  290.  
  291.           typedef struct
  292.           {
  293.                   int _r_e_a_s_o_n;
  294.                   XEvent * _e_v_e_n_t;
  295.           } XmAnyCallbackStruct;
  296.  
  297.           _r_e_a_s_o_n    Indicates why the callback was invoked
  298.  
  299.           _e_v_e_n_t     Points to the _X_E_v_e_n_t that triggered the callback
  300.                     or is NULL if this callback was not triggered due
  301.                     to an _X_E_v_e_n_t
  302.  
  303.         TTTTrrrraaaannnnssssllllaaaattttiiiioooonnnnssss
  304.           XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn includes translations from XXXXmmmmPPPPrrrriiiimmmmiiiittttiiiivvvveeee.
  305.           XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn includes the menu traversal translations
  306.           from XXXXmmmmLLLLaaaabbbbeeeellll.
  307.  
  308.           Note that altering translations in ####oooovvvveeeerrrrrrrriiiiddddeeeeor ####aaaauuuuggggmmmmeeeennnntttt mode
  309.           is undefined.
  310.  
  311.           The following list describes the translations for a
  312.           CascadeButton in a MenuBar.  The following key names are
  313.           listed in the X standard key event translation table syntax.
  314.           This format is the one used by Motif to specify the widget
  315.           actions corresponding to a given key.  A brief overview of
  316.           the format is provided under VVVViiiirrrrttttuuuuaaaallllBBBBiiiinnnnddddiiiinnnnggggssss(3).  For a
  317.           complete description of the format, please refer to the X
  318.           Toolkit Instrinsics Documentation.
  319.  
  320.           <<<<EEEEnnnntttteeeerrrrWWWWiiiinnnnddddoooowwww>>>>NNNNoooorrrrmmmmaaaallll:
  321.                     MenuBarEnter()
  322.  
  323.           <<<<LLLLeeeeaaaavvvveeeeWWWWiiiinnnnddddoooowwww>>>>NNNNoooorrrrmmmmaaaallll:
  324.  
  325.  
  326.  
  327.      Page 5                                          (printed 10/3/02)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  335.  
  336.  
  337.  
  338.                     MenuBarLeave()
  339.  
  340.           <<<<BBBBttttnnnn2222DDDDoooowwwwnnnn>>>>:
  341.                     ProcessDrag()
  342.  
  343.           cccc<<<<BBBBttttnnnnDDDDoooowwwwnnnn>>>>:
  344.                     MenuButtonTakeFocusUp()
  345.  
  346.           cccc<<<<BBBBttttnnnnUUUUpppp>>>>: MenuButtonTakeFocusUp()
  347.  
  348.           ~~~~cccc<<<<BBBBttttnnnnDDDDoooowwwwnnnn>>>>:
  349.                     MenuBarSelect()
  350.  
  351.           ~~~~cccc<<<<BBBBttttnnnnUUUUpppp>>>>:
  352.                     DoSelect()
  353.  
  354.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffSSSSeeeelllleeeecccctttt>>>>:
  355.                     KeySelect()
  356.  
  357.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffAAAAccccttttiiiivvvvaaaatttteeee>>>>:
  358.                     KeySelect()
  359.  
  360.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffHHHHeeeellllpppp>>>>:
  361.                     Help()
  362.  
  363.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffCCCCaaaannnncccceeeellll>>>>:
  364.                     CleanupMenuBar()
  365.  
  366.           ~~~~ssss<<<<KKKKeeeeyyyy>>>>RRRReeeettttuuuurrrrnnnn:
  367.                     KeySelect()
  368.  
  369.           ~~~~ssss<<<<KKKKeeeeyyyy>>>>ssssppppaaaacccceeee:
  370.                     KeySelect()
  371.  
  372.           The following list describes the translations for a
  373.           CascadeButton in a PullDown or Popup MenuPane.  In a Popup
  374.           menu system, <<<<BBBBttttnnnn3333>>>> also performs the <<<<BBBBttttnnnn1111>>>> actions.
  375.  
  376.           <<<<EEEEnnnntttteeeerrrrWWWWiiiinnnnddddoooowwww>>>>:
  377.                     DelayedArm()
  378.  
  379.           <<<<LLLLeeeeaaaavvvveeeeWWWWiiiinnnnddddoooowwww>>>>:
  380.                     CheckDisarm()
  381.  
  382.           <<<<BBBBttttnnnn2222DDDDoooowwwwnnnn>>>>:
  383.                     ProcessDrag()
  384.  
  385.           cccc<<<<BBBBttttnnnnDDDDoooowwwwnnnn>>>>:
  386.                     MenuButtonTakeFocus()
  387.  
  388.           cccc<<<<BBBBttttnnnnUUUUpppp>>>>: MenuButtonTakeFocusUp()
  389.  
  390.  
  391.  
  392.  
  393.      Page 6                                          (printed 10/3/02)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  401.  
  402.  
  403.  
  404.           ~~~~cccc<<<<BBBBttttnnnnDDDDoooowwwwnnnn>>>>:
  405.                     StartDrag()
  406.  
  407.           ~~~~cccc<<<<BBBBttttnnnnUUUUpppp>>>>:
  408.                     DoSelect()
  409.  
  410.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffSSSSeeeelllleeeecccctttt>>>>:
  411.                     KeySelect()
  412.  
  413.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffAAAAccccttttiiiivvvvaaaatttteeee>>>>:
  414.                     KeySelect()
  415.  
  416.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffHHHHeeeellllpppp>>>>:
  417.                     Help()
  418.  
  419.           ::::<<<<KKKKeeeeyyyy>>>><<<<oooossssffffCCCCaaaannnncccceeeellll>>>>:
  420.                     CleanupMenuBar()
  421.  
  422.           ~~~~ssss<<<<KKKKeeeeyyyy>>>>RRRReeeettttuuuurrrrnnnn:
  423.                     KeySelect()
  424.  
  425.           ~~~~ssss<<<<KKKKeeeeyyyy>>>>ssssppppaaaacccceeee:
  426.                     KeySelect()
  427.  
  428.         AAAAccccttttiiiioooonnnn RRRRoooouuuuttttiiiinnnneeeessss
  429.           The XmCascadeButton action routines are
  430.  
  431.           CleanupMenuBar():
  432.                     In a MenuBar, disarms the CascadeButton and the
  433.                     menu and, when the shell's keyboard focus policy
  434.                     is XXXXmmmmEEEEXXXXPPPPLLLLIIIICCCCIIIITTTT, restores keyboard focus to the
  435.                     widget that had the focus before the menu was
  436.                     entered.
  437.  
  438.                     In a toplevel Pulldown MenuPane from a MenuBar,
  439.                     unposts the menu, disarms the MenuBar
  440.                     CascadeButton and the MenuBar, and, when the
  441.                     shell's keyboard focus policy is XXXXmmmmEEEEXXXXPPPPLLLLIIIICCCCIIIITTTT,
  442.                     restores keyboard focus to the widget that had the
  443.                     focus before the MenuBar was entered.  In other
  444.                     Pulldown MenuPanes, unposts the menu.
  445.  
  446.                     In a Popup MenuPane, unposts the menu and, when
  447.                     the shell's keyboard focus policy is XXXXmmmmEEEEXXXXPPPPLLLLIIIICCCCIIIITTTT,
  448.                     restores keyboard focus to the widget from which
  449.                     the menu was posted.
  450.  
  451.           DoSelect():
  452.                     Calls the callbacks in XXXXmmmmNNNNccccaaaassssccccaaaaddddiiiinnnnggggCCCCaaaallllllllbbbbaaaacccckkkk, posts
  453.                     the submenu attached to the CascadeButton and
  454.                     enables keyboard traversal within the menu.  If
  455.                     the CascadeButton does not have a submenu
  456.  
  457.  
  458.  
  459.      Page 7                                          (printed 10/3/02)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  467.  
  468.  
  469.  
  470.                     attached, this action calls the callbacks in
  471.                     XXXXmmmmNNNNaaaaccccttttiiiivvvvaaaatttteeeeCCCCaaaallllllllbbbbaaaacccckkkk, activates the CascadeButton,
  472.                     and unposts all posted menus in the cascade.
  473.  
  474.           Help():   Unposts all menus in the menu hierarchy and, when
  475.                     the shell's keyboard focus policy is XXXXmmmmEEEEXXXXPPPPLLLLIIIICCCCIIIITTTT,
  476.                     restores keyboard focus to the widget that had the
  477.                     focus before the menu system was entered.  Calls
  478.                     the callbacks for XXXXmmmmNNNNhhhheeeellllppppCCCCaaaallllllllbbbbaaaacccckkkk if any exist.
  479.                     If there are no help callbacks for this widget,
  480.                     this action calls the help callbacks for the
  481.                     nearest ancestor that has them.
  482.  
  483.           KeySelect():
  484.                     Calls the callbacks in XXXXmmmmNNNNccccaaaassssccccaaaaddddiiiinnnnggggCCCCaaaallllllllbbbbaaaacccckkkk, and
  485.                     posts the submenu attached to the CascadeButton if
  486.                     keyboard traversal is enabled in the menu.  If the
  487.                     CascadeButton does not have a submenu attached,
  488.                     this action calls the callbacks in
  489.                     XXXXmmmmNNNNaaaaccccttttiiiivvvvaaaatttteeeeCCCCaaaallllllllbbbbaaaacccckkkk, activates the CascadeButton,
  490.                     and unposts all posted menus in the cascade.
  491.  
  492.           MenuBarSelect():
  493.                     Unposts any menus posted by the parent menu.  Arms
  494.                     both the CascadeButton and the MenuBar, posts the
  495.                     associated submenu, and enables mouse traversal.
  496.                     If the menu is already active, this event disables
  497.                     keyboard traversal for the menu and returns the
  498.                     menu to mouse traversal mode.
  499.  
  500.           StartDrag():
  501.                     Arms the CascadeButton, posts the associated
  502.                     submenu, and enables mouse traversal.  If the menu
  503.                     is already active, this event disables keyboard
  504.                     traversal for the menu and returns the menu to
  505.                     mouse traversal mode.
  506.  
  507.         AAAAddddddddiiiittttiiiioooonnnnaaaallll BBBBeeeehhhhaaaavvvviiiioooorrrr
  508.           Posting a submenu calls the XXXXmmmmNNNNccccaaaassssccccaaaaddddiiiinnnnggggCCCCaaaallllllllbbbbaaaacccckkkk callbacks.
  509.           This widget has the following additional behavior:
  510.  
  511.           <<<<EEEEnnnntttteeeerrrrWWWWiiiinnnnddddoooowwww>>>>:
  512.                     If keyboard traversal is enabled, does nothing.
  513.                     Otherwise, in a MenuBar that is armed, unposts any
  514.                     MenuPanes associated with another MenuBar entry,
  515.                     arms the CascadeButton, and posts the associated
  516.                     submenu.  In other menus, arms the CascadeButton
  517.                     and posts the associated submenu after the delay
  518.                     specified by XXXXmmmmNNNNmmmmaaaappppppppiiiinnnnggggDDDDeeeellllaaaayyyy.
  519.  
  520.           <<<<LLLLeeeeaaaavvvveeeeWWWWiiiinnnnddddoooowwww>>>>:
  521.                     If keyboard traversal is enabled does nothing.
  522.  
  523.  
  524.  
  525.      Page 8                                          (printed 10/3/02)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))       UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV       XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn((((3333XXXX))))
  533.  
  534.  
  535.  
  536.                     Otherwise, in a MenuBar that is armed, disarms the
  537.                     CascadeButton if the submenu associated with the
  538.                     CascadeButton is not currently posted or if there
  539.                     is no submenu associated with the CascadeButton.
  540.  
  541.                     In other menus, if the pointer moves anywhere
  542.                     except into a submenu associated with the
  543.                     CascadeButton, the CascadeButton is disarmed and
  544.                     its submenu is unposted.
  545.  
  546.         VVVViiiirrrrttttuuuuaaaallll BBBBiiiinnnnddddiiiinnnnggggssss
  547.           The bindings for virtual keys are vendor specific.  For
  548.           information about bindings for virtual buttons and keys, see
  549.           VVVViiiirrrrttttuuuuaaaallllBBBBiiiinnnnddddiiiinnnnggggssss(3).
  550.  
  551.      RRRREEEELLLLAAAATTTTEEEEDDDD
  552.           CCCCoooorrrreeee(3), XXXXmmmmCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnnHHHHiiiigggghhhhlllliiiigggghhhhtttt(3),
  553.           XXXXmmmmCCCCrrrreeeeaaaatttteeeeCCCCaaaassssccccaaaaddddeeeeBBBBuuuuttttttttoooonnnn(3), XXXXmmmmCCCCrrrreeeeaaaatttteeeeMMMMeeeennnnuuuuBBBBaaaarrrr(3),
  554.           XXXXmmmmCCCCrrrreeeeaaaatttteeeePPPPuuuullllllllddddoooowwwwnnnnMMMMeeeennnnuuuu(3), XXXXmmmmCCCCrrrreeeeaaaatttteeeePPPPooooppppuuuuppppMMMMeeeennnnuuuu(3), XXXXmmmmLLLLaaaabbbbeeeellll(3),
  555.           XXXXmmmmPPPPrrrriiiimmmmiiiittttiiiivvvveeee(3), and XXXXmmmmRRRRoooowwwwCCCCoooolllluuuummmmnnnn(3).
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.      Page 9                                          (printed 10/3/02)
  592.  
  593.  
  594.  
  595.